package ai.people.netmon.framework.domain.system.request;

import com.people.core.validator.annotation.NumberStatusValue;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.Max;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;

/**
 * @author yuanqinglong
 * @date 2022/4/2 17:27
 */
@Data
public class NmSystemUserAllParam {


    /**
     * 账户
     *
     * @mock zhangSan
     */
    @Length(max = 30, message = "账号最大长度{max}")
    @NotEmpty(message = "账号为空")
    private String account;

    /**
     * 电话
     *
     * @mock 15100000000
     */
    //@Length(min = 1, max = 11, message = "手机号格式错误")
    private String phone;



    /**
     * 状态 1:正常，2:被锁定，3:被举报
     */
    @NumberStatusValue(values = {1, 2, 3}, message = "状态参数值错误")
    private Integer status;

    /**
     * 名字
     *
     * @mock kobe
     */
    @Length(max = 100, message = "姓名长度最长为{max}")
    private String name;

    /**
     * 昵称
     *
     * @mock james
     */
    @Length(max = 100, message = "昵称长度最长为{max}")
    private String nickName;

    /**
     * 性别 0:未填写，1:男，2:女，3:保密
     *
     * @mock 1
     */
    @NumberStatusValue(values = {1, 2, 0}, message = "性别参数值错误")
    private Integer sex;

    /**
     * 头像
     *
     * @mock http://uusssl.ddd
     */
    @Length(max = 100, message = "头像长度最长为{max}")
    private String avatar;

    /**
     * 生日
     *
     * @mock 1999-01-01
     */
    @Length(max = 20, message = "生日长度最长为{max}")
    private String birthday;

    /**
     * 电子邮件
     *
     * @mock 119222@163.com
     */
    @Length(max = 35, message = "电子邮件长度最长为{max}")
    private String email;

    /**
     * 爱好类型
     *
     * @mock 打篮球、踢足球
     */
    @Length(max = 200, message = "爱好长度最长为{max}")
    private String hobbyType;

    /**
     * 是VIP 1:是 0:不是
     *
     * @mock 1
     */
    @NumberStatusValue(values = {1, 0}, message = "vip参数值错误")
    private Integer isVip;

    /**
     * 登录ip
     *
     * @mock 192.168.1.1
     */
    private String loginIp;

    /**
     * 关注的账号/群组/主题数量上限
     *
     * @mock 20
     */
    @Max(value = Integer.MAX_VALUE, message = "关注上线超过最大值{value}")
    @NotNull(message = "关注上线为空")
    private Integer joinMaxCount;

    /**
     * 标签
     *
     * @mock INT.POLITICS
     */
    @Length(max = 255, message = "标签长度最长为{max}")
    private String label;

    /**
     * 归属地
     *
     * @mock 北京
     */
    @Length(max = 255, message = "归属地长度最长为{max}")
    private String place;

    /**
     * ip白名单
     *
     * @mock 192.168.1.1
     */
    @Length(max = 500, message = "ip白名单长度最长为{max}")
    private String ipWhiteList;

    /**
     * 创建时间
     *
     * @ignore
     */
    private LocalDateTime createTime;

    /**
     * 备注
     *
     * @mock 这是备注
     */
    @Length(max = 255, message = "备注长度最长为{max}")
    private String remark;

    /**
     * 过期时间
     *
     * @mock 2022-12-12
     */
    private LocalDateTime expiryTime;

    /**
     * 访问来源
     *
     * @mock telegram, tor
     */
    private String accessibleSource;
}
